package com.ebupt.migu.music.market.service;

import com.ebupt.migu.music.common.entity.ResultObject;
import com.ebupt.migu.music.market.dto.MarketSmsCountDTO;
import com.ebupt.migu.music.market.entity.MarketSmsAuditRecord;
import com.ebupt.migu.music.market.entity.MarketSmsStrategy;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ebupt.migu.music.market.entity.ReceiveMsgResp;
import com.ebupt.migu.music.market.vo.*;
import com.ebupt.migu.music.system.entity.SysUser;

import java.util.List;
import java.util.Map;

/**
 * @author 23265
 * @description 针对表【market_sms_strategy(运营短信策略)】的数据库操作Service
 * @createDate 2024-09-10 10:46:24
 */
public interface MarketSmsStrategyService extends IService<MarketSmsStrategy> {


    /**
     * 创建策略
     *
     * @param strategyVO
     * @return
     */
    ResultObject addStrategy(MarketSmsStrategyVO strategyVO);


    /**
     * 查询策略列表
     * 查询条件： 策略名称、策略类型、创建时间、执行状态、创建人、部门
     *
     * @param vo
     * @return
     */
    ResultObject strategyList(MarketSmsStrategyPageVO vo);


    /**
     * 编辑
     *
     * @param vo
     * @return
     */
    ResultObject strategyEdit(MarketSmsStrategyVO vo);

    /**
     * 撤回
     *
     * @param strategyId
     * @return
     */
    ResultObject revocation(String strategyId, String status);

    /**
     * 策略明細
     *
     * @param strategyId
     * @return
     */
    ResultObject strategyDetail(String strategyId);

    /**
     * 策略记录
     *
     * @param strategyId
     * @return
     */
    ResultObject checkRecord(String strategyId);


    /**
     * 撤回记录
     *
     * @param strategyId
     * @return
     */
    ResultObject revocationRecord(String strategyId);


    /**
     * 删除
     *
     * @param strategyId
     * @return
     */
    ResultObject delete(String strategyId);


    /**
     * 查询策略列表
     * 查询条件： 策略名称、策略类型、创建时间、执行状态、创建人、部门
     *
     * @param vo
     * @return
     */
    ResultObject checkList(MarketSmsAuditPageVO vo);


    /**
     * 效果统计
     * 查询条件： 策略名称、策略类型、创建时间、执行状态、创建人、部门
     *
     * @param vo
     * @return
     */
    ResultObject effectList(MarketSmsCountPageVO vo);


    /**
     * 策略审核
     *
     * @param vo
     * @return
     */
    ResultObject check(MarketSmsAuditRecord vo);


    /**
     * 导出
     *
     * @param params
     * @return
     */
    List<MarketSmsCountDTO> export(MarketSmsCountPageVO params);


    /**
     * 查看短信发送进度
     *
     * @param strategyId
     * @return
     */
    ResultObject checkProgress(String strategyId);
}
